问题:将内存ffff:0ffff:b单元中的数据复制到0:2000:20b单元中。
assume cs:codesg
codesg segment
mov bx,0
mov cx,12
s:

mov ax,0ffffh
mov ds,ax
mov dl,[bx]



mov ax,002h
mov ds,ax
mov [bx],dl


inc bx
loop s
mov ax,4c00h
int 21h

codesg ends
end

思路简单,利用循环,修改两次ds的值,bx可以同步,利用dl即可将一段内存地址中的内容传递到另一内存中,但是可以改进,使用段寄存器。代码如下:

assume cs:codesg
codesg segment
mov bx,0
mov cx,12
mov ax,0ffffh
mov ds,ax
mov ax,002h
mov de,ax
s:
mov dl,ds:[bx];段前缀的使用 改进程序5.8

mov es:[bx],dl;//es为附加段

inc bx
loop s
mov ax,4c00h
int 21h

codesg ends
end
这样就可以不用每个循环修改两次ds的值,在循环外设置好ds和es 。一共省略12次设置ds的操作,效率提高。